package com.lz.manage.model.vo.fileInfo;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.lz.common.annotation.Excel;
import com.lz.manage.model.domain.FileInfo;
import lombok.Data;
import org.springframework.beans.BeanUtils;

import java.io.Serializable;
import java.util.Date;

/**
 * 文件信息Vo对象 t_file_info
 *
 * @author YY
 * @date 2025-07-17
 */
@Data
public class FileInfoVo implements Serializable {
    private static final long serialVersionUID = 1L;

    /**
     * 文件编号
     */
    @Excel(name = "文件编号")
    private Long fileId;

    /**
     * 文件夹编号
     */
    @Excel(name = "文件夹编号")
    private String folderName;
    private Long folderId;

    /**
     * 文件名
     */
    @Excel(name = "文件名")
    private String fileName;

    /**
     * 文件类型
     */
    @Excel(name = "文件类型")
    private String fileType;

    /**
     * 文件路径
     */
    @Excel(name = "文件路径")
    private String fileUrl;

    /**
     * 文件后缀
     */
    @Excel(name = "文件后缀")
    private String fileSuffix;

    /**
     * 排序权重
     */
    @Excel(name = "排序权重")
    private Long sortNum;

    /**
     * 文件标签
     */
    @Excel(name = "文件标签")
    private String tagName;
    private Long tagId;

    /**
     * 创建人
     */
    @Excel(name = "创建人")
    private String userName;
    private Long userId;

    /**
     * 创建时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "创建时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date createTime;

    /**
     * 更新时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "更新时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date updateTime;

    /**
     * 备注
     */
    @Excel(name = "备注")
    private String remark;


    /**
     * 对象转封装类
     *
     * @param fileInfo FileInfo实体对象
     * @return FileInfoVo
     */
    public static FileInfoVo objToVo(FileInfo fileInfo) {
        if (fileInfo == null) {
            return null;
        }
        FileInfoVo fileInfoVo = new FileInfoVo();
        BeanUtils.copyProperties(fileInfo, fileInfoVo);
        return fileInfoVo;
    }
}
